import {defineConfig} from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'

// import {viteSingleFile} from "vite-plugin-singlefile"
// import viteCompression from 'vite-plugin-compression'
// viteCompression({
//     verbose: true,
//     disable: false,
//     threshold: 10240,
//     algorithm: 'gzip',
//     ext: '.gz',
// })
// https://vitejs.dev/config/
export default defineConfig({
    base: "./",
    plugins: [vue()],
    build: {
        // 小于此阈值的导入或引用资源将内联为 base64 编码， 以避免额外的http请求， 设置为 0, 可以完全禁用此项，
        // assetsInlineLimit: 4096,
        // 启动 / 禁用 CSS 代码拆分
        // 关闭代码分割,默认会自动分割node_modules代码
        // lib: {
        //     entry: path.resolve(__dirname, 'src/main.js'),
        //     name: 'index',
        //     fileName: '/index'
        // },
        cssCodeSplit: false,
        // 构建后是否生成 soutrce map 文件
        sourcemap: false,
        terserOptions: {
            compress: {
                drop_console: true,
                drop_debugger: true,
            },
        },
        // 分割代码
        splitting: false,
        // 分割 CSS 文件
        extractCss: true,
        // chunk 大小警告的限制
        // chunkSizeWarningLimit: 99999999,
        // assetsInlineLimit:9999999,
        // concurrencyLimit:99999,
        // chunkSizeWarningLimit: 1500,大文件报警阈值设置,不建议使用
        rollupOptions: {
            input: {
                index: path.resolve(__dirname, 'index.html'),
            },
            output: {
                inlineDynamicImports: false,
                manualChunks: () => 'main.js',
                entryFileNames: 'assets/[name].js',
                assetFileNames: 'assets/[name].[ext]',
            },
        }
    },
    // 强制预构建插件包
    optimizeDeps: {
        include: [
            `monaco-editor/esm/vs/language/json/json.worker`,
            `monaco-editor/esm/vs/language/css/css.worker`,
            `monaco-editor/esm/vs/language/html/html.worker`,
            `monaco-editor/esm/vs/language/typescript/ts.worker`,
            `monaco-editor/esm/vs/editor/editor.worker`
        ],
    },

})
